package redispo

import "time"

// iot设备指令生命周期数据
type CmdScope struct {
	Id                 uint64    `json:"-" gorm:"primaryKey;AUTO_INCREMENT"`
	NodeId             string    `json:"nodeId"`             //设备标识
	DeviceId           string    `json:"deviceId"`           //IOT平台设备标识
	IotCmdId           string    `json:"iotCmdId"`           //IOT平台指令标识
	AppId              string    `json:"appId"`              //应用ID
	CtTime             time.Time `json:"ctTime"`             //本地建立时间
	RspStatus          uint64    `json:"rspStatus"`          //设备命令的状态.FAILED(0, "FAILED"), SUCCESSFUL(1, "SUCCESSFUL"), SENT(2, "SENT"), DELIVERED(3, "DELIVERED"), PENDING(4, "PENDING"), TIMEOUT(5, "TIMEOUT"), EXPIRED(6,"EXPIRED"), OTHER(9, "OTHER");
	CreationTime       time.Time `json:"creationTime"`       //设备命令的创建时间
	ExpTime            time.Time `json:"expTime"`            //设备命令执行的时间
	PlatformIsusedTime time.Time `json:"platformIsusedTime"` //平台发送设备命令的时间
	DeliveredTime      time.Time `json:"deliveredTime"`      //平台将设备命令送达到设备的时间
	ExpireTime         uint64    `json:"expireTime"`         //平台发送设备命令的次数
	AepCmdId           string    `json:"aepCmdId"`           //aep平台指令标识
	ProductId          string    `json:"productId"`          //aep平台产品标识
}

// 指令缓存数据
type CmdItemCache struct {
	CreateAt    time.Time  `json:"createAt"`    // 创建时间
	SendAt      *time.Time `json:"sendAt"`      // 发送时间
	DeliveryAt  *time.Time `json:"deliveryAt"`  // 送达时间
	ExecutionAt *time.Time `json:"executionAt"` // 执行时间
	Send        bool       `json:"send"`        //是否送达
	Delivery    bool       `json:"delivery"`
	Executed    bool       `json:"executed"`
	Expired     bool       `json:"expired"`
	Success     bool       `json:"success"`
	Fail        bool       `json:"fail"`
	Expire      uint64     `json:"expire"` //过期时间
}

// 指令执行数据表
type CmdDelived struct {
	Id         uint64    `gorm:"primaryKey;AUTO_INCREMENT" json:"-"`
	IotDevId   string    `gorm:"iot_dev_id" json:"iotDevId"`
	IotCmdId   string    `gorm:"iot_cmd_id" json:"iotCmdId"`
	RecvTime   time.Time `gorm:"recv_time" json:"recvTime"`
	ResultCode string    `gorm:"result_code" json:"resultCode"`
	UpStated   string    `gorm:"up_stated" json:"-"` //是否更新
}

func (CmdDelived) TableName() string {
	return "ht_cmd_delived"
}

// 指令信息数据表
type CmdInfo struct {
	Id        uint64 `json:"-" gorm:"primaryKey;AUTO_INCREMENT"`
	Rid       uint64 `json:"-" gorm:"rid"`            //scope标识
	CmdId     uint64 `json:"cmdId" gorm:"cmd_id"`     //指令标识
	CmdName   string `json:"cmdName" gorm:"cmd_name"` //指令名称
	ServiceId string `json:"-" gorm:"service_id"`     //oc平台服务标识（已过时，固定值"mqtt"）
	MethodId  string `json:"-" gorm:"method_id"`      //oc平台指令标识（已过时，固定值"mqtt"）
}

func (CmdInfo) TableName() string {
	return "ht_cmd_info"
}

// 振动、速度和温度报警阀值指令数据表
type CmdThresholdData struct {
	Id  uint64  `json:"-" gorm:"primaryKey;AUTO_INCREMENT"`
	Bid uint64  `json:"-" gorm:"bid"` //指令信息ID
	Xo  uint8   `gorm:"xo" json:"xo"`
	Yo  uint8   `gorm:"yo" json:"yo"`
	Zo  uint8   `gorm:"zo" json:"zo"`
	Xh  float32 `gorm:"xh" json:"xh"`
	Yh  float32 `gorm:"yh" json:"yh"`
	Zh  float32 `gorm:"zh" json:"zh"`
}

func (CmdThresholdData) TableName() string {
	return "ht_cmd_threshold_data"
}

// 工作参数指令数据表
type CmdWorkData struct {
	Id               uint64 `gorm:"primaryKey;AUTO_INCREMENT"`
	Bid              uint64 `gorm:"bid"`                //指令信息ID
	VibrateRpFreq    uint16 `gorm:"monitor_invl"`       //采样频率（正常）
	UploadFreq       uint16 `gorm:"upload_invl"`        //上传频率（正常），目前同VibrateRpFreq
	TempCollectFreq  uint16 `gorm:"tmp"`                //温度上传频率（补充
	SpeedCollectFreq uint16 `gorm:"speed_collect_freq"` //速度上传频率（补充）
	MotorRmin        uint16 `gorm:"motor_rmin"`         //电机转速
	MotorRmid        uint16 `gorm:"motor_rmid"`         //电机转速,同motorRmin
}

func (CmdWorkData) TableName() string {
	return "ht_cmd_work_data"
}
